home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / DialogHtmlHelp.cpp < prev    next >
C/C++ Source or Header  |  2005-02-16  |  7KB  |  274 lines

  1. // DialogHtmlHelp.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "DialogHtmlHelp.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. extern "C" {
  15.   #include "HTTrackInterface.h"
  16.   #include "htsbase.h"
  17. };
  18.  
  19. extern HICON httrack_icon;
  20.  
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CDialogHtmlHelp dialog
  23.  
  24.  
  25. CDialogHtmlHelp::CDialogHtmlHelp(CWnd* pParent /*=NULL*/)
  26.     : CDialog(CDialogHtmlHelp::IDD, pParent)
  27. {
  28.   page="";
  29.     //{{AFX_DATA_INIT(CDialogHtmlHelp)
  30.     //}}AFX_DATA_INIT
  31. }
  32.  
  33.  
  34. void CDialogHtmlHelp::DoDataExchange(CDataExchange* pDX)
  35. {
  36.     CDialog::DoDataExchange(pDX);
  37.     //{{AFX_DATA_MAP(CDialogHtmlHelp)
  38.     //}}AFX_DATA_MAP
  39. }
  40.  
  41.  
  42. BEGIN_MESSAGE_MAP(CDialogHtmlHelp, CDialog)
  43.     //{{AFX_MSG_MAP(CDialogHtmlHelp)
  44.     ON_WM_SIZE()
  45.     ON_WM_CREATE()
  46.     ON_BN_CLICKED(IDC_BACK, OnBack)
  47.     ON_BN_CLICKED(IDC_FORWARD, OnForward)
  48.     ON_BN_CLICKED(IDC_STOP, OnStop)
  49.     ON_BN_CLICKED(IDC_RELOAD, OnReload)
  50.     ON_BN_CLICKED(IDC_HOME, OnHome)
  51.     ON_BN_CLICKED(ID_FILE_PRINT, OnFilePrint)
  52.     ON_WM_CLOSE()
  53.     //}}AFX_MSG_MAP
  54.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  55.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  56.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  57.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  58.     ON_COMMAND(ID_BUTTON_HOME,OnHome)
  59. END_MESSAGE_MAP()
  60.  
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CDialogHtmlHelp message handlers
  63.  
  64. BOOL CDialogHtmlHelp::OnInitDialog() 
  65. {
  66.     CDialog::OnInitDialog();
  67.   SetIcon(httrack_icon,false);
  68.   SetIcon(httrack_icon,true);
  69.   EnableToolTips(true);     // TOOL TIPS
  70.   SetForegroundWindow();   // yop en premier plan!
  71.  
  72.   strcpybuff(home,"file://");
  73.   {
  74.     char* a=home+strlen(home);
  75.     ::GetModuleFileName(NULL, a, sizeof(home)/sizeof(TCHAR) - 1 - strlen(home));
  76.     // strcatbuff(home,AfxGetApp()->m_pszHelpFilePath);
  77.     a = home + strlen(home) -1;
  78.     while( (*a!='\\') && ((int) a > (int) home) ) a--;
  79.     if (*a=='\\') {
  80.       *(a+1)='\0';
  81.     }
  82.     strcatbuff(home,"html\\");
  83.     strcpybuff(home_dir,home);
  84.     strcatbuff(home,"index.html");
  85.   }
  86.  
  87.   // crΘer
  88.   if (m_page.CreateFromStatic(IDC_HTMLVIEW, this)) {
  89.     m_page.SetToolBar(false);
  90.     m_page.SetMenuBar(false);
  91.     m_page.SetStatusBar(false);
  92.     m_page.SetRegisterAsBrowser(false);
  93.     m_page.SetFullScreen(false);
  94.     if (page.GetLength()==0)
  95.       OnHome();
  96.     else
  97.       Go(page);
  98.     UpdateWindow();
  99.   } else {
  100.     EndDialog(IDCANCEL);
  101.     if (!ShellExecute(NULL,"open",home+strlen("file://"),"","",SW_RESTORE))
  102.       AfxMessageBox(LANG(LANG_DIAL1));
  103.   }
  104.   return TRUE;  
  105. }
  106.  
  107. // Resize
  108. void CDialogHtmlHelp::OnSize(UINT nType, int cx, int cy) 
  109. {
  110.   CDialog::OnSize(nType, cx, cy);
  111.  
  112.   HWND ip = ::GetDlgItem(this->m_hWnd,IDC_HTMLVIEW);
  113.   if (ip) {
  114.     int w,h;
  115.     RECT rect;
  116.     ::GetWindowRect(ip,&rect);
  117.     // screen coord -> client coord
  118.     POINT a,b;
  119.     a.x=rect.left; a.y=rect.top; b.x=rect.right; b.y=rect.bottom;
  120.     ::ScreenToClient(this->m_hWnd,&a); ::ScreenToClient(this->m_hWnd,&b);
  121.     rect.left=a.x; rect.top=a.y; rect.right=b.x; rect.bottom=b.y;
  122.     w = max(cx - rect.left,320);
  123.     h = max(cy - rect.top,200);
  124.     ::SetWindowPos(ip,NULL,0,0,w,h,SWP_NOZORDER|SWP_NOMOVE|SWP_NOOWNERZORDER);
  125.     //base.OnSizeCallback(this,nType,cx,cy);
  126.   }
  127. }
  128.  
  129. int CDialogHtmlHelp::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  130. {
  131.     if (CDialog::OnCreate(lpCreateStruct) == -1)
  132.         return -1;
  133.  
  134.   /*
  135.   if (!m_wndToolBar.Create(this))
  136.         return -1;      // fail to create
  137.   if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  138.         return -1;      // fail to create
  139.  
  140.   // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  141.     m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  142.         CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  143.   */
  144.     
  145.     return 0;
  146. }
  147.  
  148. // help de l'help..
  149. // Appel aide
  150. void CDialogHtmlHelp::OnHelpInfo2() {
  151.   (void)OnHelpInfo(NULL);
  152. }
  153.  
  154. BOOL CDialogHtmlHelp::OnHelpInfo(HELPINFO* dummy) 
  155. {
  156.   return true;
  157. }
  158.  
  159.  
  160. // Home
  161. void CDialogHtmlHelp::OnHome() {
  162.   m_page.Navigate2(home);
  163.   m_page.ShowWindow(SW_SHOW);
  164.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  165. }
  166.  
  167. void CDialogHtmlHelp::Go(CString st) {
  168.   if (st.Left(7)!="http://") {
  169.     char tempo[1024];
  170.     strcpybuff(tempo,home_dir);
  171.     strcatbuff(tempo,st);
  172.     m_page.Navigate2(tempo);
  173.   } else
  174.     m_page.Navigate2(st);
  175.   m_page.ShowWindow(SW_SHOW);
  176.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  177. }
  178.  
  179. void CDialogHtmlHelp::OnBack() 
  180. {
  181.   m_page.GoBack();
  182.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  183. }
  184.  
  185. void CDialogHtmlHelp::OnForward() 
  186. {
  187.   m_page.GoForward();
  188.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  189. }
  190.  
  191. void CDialogHtmlHelp::OnStop() 
  192. {
  193.   m_page.Stop();
  194.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  195. }
  196.  
  197. void CDialogHtmlHelp::OnReload() 
  198. {
  199.   m_page.Refresh();
  200.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  201. }
  202.  
  203. void CDialogHtmlHelp::OnFilePrint() 
  204. {
  205.   this->GetDlgItem(IDC_HTMLVIEW)->SendMessage(WM_COMMAND,ID_FILE_PRINT,NULL);
  206.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  207. }
  208.  
  209.  
  210. // ------------------------------------------------------------
  211. // TOOL TIPS
  212. //
  213. // ajouter dans le .cpp:
  214. // remplacer les deux Wid1:: par le nom de la classe::
  215. // dans la message map, ajouter
  216. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  217. // dans initdialog ajouter
  218. // EnableToolTips(true);     // TOOL TIPS
  219. //
  220. // ajouter dans le .h:
  221. // char* GetTip(int id);
  222. // et en generated message map
  223. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  224. BOOL CDialogHtmlHelp::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  225. {
  226.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  227.   UINT nID =pNMHDR->idFrom;
  228.   if (pTTT->uFlags & TTF_IDISHWND)
  229.   {
  230.     // idFrom is actually the HWND of the tool
  231.     nID = ::GetDlgCtrlID((HWND)nID);
  232.     if(nID)
  233.     {
  234.       char* st=GetTip(nID);
  235.       if (st != "") {
  236.         pTTT->lpszText = st;
  237.         pTTT->hinst = AfxGetResourceHandle();
  238.         return(TRUE);
  239.       }
  240.     }
  241.   }
  242.   return(FALSE);
  243. }
  244. char* CDialogHtmlHelp::GetTip(int ID)
  245. {
  246.   switch(ID) {
  247.     case IDCANCEL:   return LANG(LANG_B3); /*"Cancel","Annuler");*/ break;
  248.     case IDOK:       return LANG(LANG_B4); /*"Add this filter","Ajouter cette rΦgle");*/ break;
  249.   }
  250.   return "";
  251. }
  252. // TOOL TIPS
  253. // ------------------------------------------------------------
  254.  
  255.  
  256. BOOL CDialogHtmlHelp::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  257. {
  258.     // TODO: Add your specialized code here and/or call the base class
  259.  
  260.   dwStyle|=(WS_OVERLAPPEDWINDOW);
  261.   dwStyle&=~(WS_CHILD);
  262.   pParentWnd=NULL;
  263.     return CDialog::Create(IDD, pParentWnd);
  264.   //ModifyStyleEx(WS_EX_TOPMOST,0);
  265.   //SetWindowPos(&wndBottom,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  266. }
  267.  
  268. /* Auto-destruction! */
  269. void CDialogHtmlHelp::OnClose() 
  270. {
  271.     ///CDialog::OnClose();
  272.     int r=CDialog::DestroyWindow();
  273. }
  274.